﻿//
// Copyright (c) 2024 BPer
//
#ifndef __BPerLOG_H__
#define __BPerLOG_H__
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>



#include <bperutil/BPerType.h>


#define BPER_LOG_FATAL     0
#define BPER_LOG_ERROR     1
#define BPER_LOG_WARNING   2
#define BPER_LOG_INFO      3
#define BPER_LOG_DEBUG     4
#define BPER_LOG_TRACE     5
#ifdef __cplusplus
extern "C"{
#endif
int32_t bPer_error_wrap(int32_t errcode, const char *fmt, ...);
void bPer_clog(int32_t level, const char *fmt, ...);
void bPer_clogf(int32_t level, const char *fmt, ...);
void bPer_clogf2(int32_t level, const char *fmt, ...);
void bPer_setCLogFile(int32_t isSetLogFile);
void bPer_setCLogFile2(int32_t isSetLogFile, char *fullpathfile);
void bPer_closeCLogFile();
void bPer_setCLogLevel(int32_t plevel);
#ifdef __cplusplus
}
#endif


#if BPer_OS_ANDROID
#include <android/log.h>
#define bPer_fatal( fmt, ...) __android_log_print(ANDROID_LOG_FATAL,fmt, ##__VA_ARGS__)

#define bPer_warn( fmt, ...) __android_log_print(ANDROID_LOG_WARN,"metaRTC",fmt, ##__VA_ARGS__)
#define bPer_info( fmt, ...) __android_log_print(ANDROID_LOG_INFO,"metaRTC",fmt, ##__VA_ARGS__)
#define bPer_debug( fmt, ...) __android_log_print(ANDROID_LOG_DEBUG,"metaRTC",fmt, ##__VA_ARGS__)


#define bPer_debug2( fmt, ...) __android_log_print(ANDROID_LOG_DEBUG,fmt, ##__VA_ARGS__)
#define bPer_info2( fmt, ...) __android_log_print(ANDROID_LOG_INFO,fmt, ##__VA_ARGS__)
#define bPer_trace( fmt, ...) __android_log_print(ANDROID_LOG_VERBOSE,"metaRTC",fmt, ##__VA_ARGS__)
#define bPer_error( fmt, ...) __android_log_print(ANDROID_LOG_ERROR,"metaRTC",fmt, ##__VA_ARGS__)
#else
#define bPer_fatal( fmt, ...) bPer_clog(0,fmt, ##__VA_ARGS__)
#define bPer_error( fmt, ...) bPer_clog(1,fmt, ##__VA_ARGS__)
#define bPer_warn( fmt, ...) bPer_clog(2,fmt, ##__VA_ARGS__)
#define bPer_info( fmt, ...) bPer_clog(3,fmt, ##__VA_ARGS__)
#define bPer_debug( fmt, ...) bPer_clog(4,fmt, ##__VA_ARGS__)


#define bPer_debug2( fmt, ...) bPer_clogf(4,fmt, ##__VA_ARGS__)
#define bPer_info2( fmt, ...) bPer_clogf(3,fmt, ##__VA_ARGS__)
#define bPer_trace( fmt, ...) bPer_clogf(5,fmt, ##__VA_ARGS__)
#define bPer_trace2( fmt, ...) bPer_clogf2(5,fmt, ##__VA_ARGS__)
#endif
#define bPer_setLogLevel(x) bPer_setCLogLevel(x)
#define bPer_setLogFile(x) bPer_setCLogFile(x)
#define bPer_setLogFile2(x,y) bPer_setCLogFile2(x,y)

#define bPer_closeLogFile bPer_closeCLogFile
#endif

